110 VTAB 6: PRINT "ARE YOU ENTERING A HEXADECIMAL": PRINT "FILE?";: GET A$: POKE -16368,0: PRINT A$
120 IF A$ = "N" OR A$ = CHR$(110) THEN GOSUB 370: POKE 34218,128: GOTO 210
130 IF A$ < >"Y" AND A$ < > CHR$(121) THEN 110
140 POKE 768,1: VTAB 10: CALL -958: PRINT "WHAT IS THE STARTING ADDRESS OF THE": PRINT "FILE (IN HEX)";: INPUT H$: GOSUB 290:A = H
150 IF A <736 OR A >39424 THEN PRINT : PRINT "INVALID ADDRESS. PLEASE DOUBLE-CHECK": PRINT "AND RE-ENTER": GOSUB 350: GOTO 140
160 VTAB 13: CALL -958: PRINT "WHAT IS THE LENGTH OF THE FILE": PRINT "(IN HEX)";: INPUT H$: GOSUB 290:B = H
170 IF B <1 OR B >32000 THEN PRINT "INVALID LENGTH. PLEASE DOUBLE-CHECK": PRINT "AND RE-ENTER": GOSUB 350: GOTO 160
180 TEXT : HOME : NORMAL : POKE 34,1: VTAB 2: PRINT "INSTALLING CHECKIT..."
190 IF A > = 6144 THEN GOSUB 320: POKE 5799, INT(A/256): POKE 5798,A -256 * PEEK(5799): POKE 5801, INT(B/256): POKE 5800,B -256 * PEEK(5801): POKE 5802,0: GOTO 230: REM ABOVE $1800 SOMEWHERE
200 IF A <6144 THEN GOSUB 370: POKE 34215, INT(A/256): POKE 34214,A -256 * PEEK(34215): POKE 34217, INT(B/256): POKE 34216,B -256 * PEEK(34217): POKE 34218,0: GOTO 210: REM BELOW $1800 SOMEWHERE
210 IF PEEK(48896) < >76 THEN POKE 56,0: POKE 57,133: CALL 1002: GOTO 250
220 PRINT CHR$(4);"IN#A$8500": GOTO 250
230 IF PEEK(48896) < >76 THEN POKE 56,0: POKE 57,22: CALL 1002: GOTO 250
240 PRINT CHR$(4)"IN#A$1600": GOTO 250
250 TEXT : HOME : NORMAL : POKE 34,1: VTAB 2: PRINT "CHECKIT INSTALLED"
260 IF PEEK(768) = 1 THEN PRINT : PRINT "ENTER THE MONITOR BY TYPING": PRINT " CALL -151"
270 NEW
280 END
290 H = 0:L = LEN(H$): ON L <1 OR L >4 GOTO 300: FOR I = 1 TO L:D = ASC( MID$ (H$,I,1)):H = H +H(L -I) *(D -48 *(D <58 AND D >47) -55 *(D >64 AND D <71)): NEXT
300 RETURN
310 REM $1600 VERSION
320 FOR I = 0 TO 377: READ ML: POKE 5632 +I,ML: NEXT I:C = 5632
330 FOR I = 0 TO 18: READ ML: POKE C +ML, PEEK(C +ML) -111: NEXT
340 RETURN
350 VTAB 21: PRINT "PRESS RETURN TO CONTINUE ";: GET CH$: PRINT CH$: POKE -16368,0: RETURN
360 REM $8500 VERSION
370 FOR I = 0 TO 377: READ ML: POKE 34048 +I,ML: NEXT I
380 RETURN
390 DATA 216,32,27,253,201,154,240,31,201,141,208,26,134,224,32,178,133,32,251,218,32,128,254,56,165,8
400 DATA 229,9,32,218,253,32,132,254,166,224,169,141,96,32,106,134,44,170,133,16,43,169,1,133,6,169
410 DATA 8,133,7,160,0,177,6,133,251,200,177,6,133,252,240,63,200,177,6,32,79,134,200,177,6,32
420 DATA 79,134,165,251,133,6,165,252,133,7,208,221,173,167,133,133,7,173,166,133,133,6,160,0,177,6
430 DATA 32,79,134,230,6,208,2,230,7,230,251,208,2,230,252,165,251,205,168,133,165,252,237,169,133,144
440 DATA 227,162,0,189,171,133,32,237,253,232,224,7,144,245,44,16,192,32,128,254,164,8,166,9,32,64
450 DATA 249,32,251,218,32,132,254,169,152,96,0,0,0,0,0,20,15,20,1,12,58,32,32,106,134,133
460 DATA 6,169,2,133,7,160,0,177,6,201,176,144,73,201,186,176,69,177,6,44,170,133,16,53,201,210
470 DATA 208,4,166,251,240,61,201,162,208,8,72,169,1,69,251,133,251,104,201,160,208,6,166,251,208,25
480 DATA 240,26,201,191,208,19,132,226,160,0,185,117,134,32,79,134,200,192,5,144,245,164,226,176,3,32
490 DATA 79,134,200,196,224,144,188,96,166,224,104,104,169,141,96,132,226,136,177,6,201,160,240,249,201,186
500 DATA 240,8,201,176,144,36,201,186,176,32,164,226,200,177,6,201,197,208,23,200,177,6,201,205,208,16
510 DATA 169,210,32,79,134,169,197,32,79,134,169,205,32,79,134,96,164,226,177,6,24,144,135,162,8,10
520 DATA 38,8,38,9,144,14,72,165,8,73,33,133,8,165,9,73,16,133,9,104,202,208,232,96,169,0
530 DATA 133,8,133,9,133,251,133,252,96,208,210,201,206,212
540 DATA 16,41,44,73,79,92,97,106,123,128,135,180,203,246,249,261,316,321,326